<!--
-------------------------------------------------------------
Title:			workLogger
Developer:		LazyWalker ( lazywalker@gmail.com )
WebSite:		http://www.deepbird.com
Last Update:	2008-03-19
Summary:		간단한 업무 기록용 소프트웨어
-------------------------------------------------------------
-->
<head>
<title>workLogger v1.0</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<hta:application
	id = "wLogger"
	applicationname = "workLogger"
	version = "1.0"
	scroll = "no"
	singleInstance = "yes"
	windowState = "normal"
	border = "thin"
	maximizeButton = "no"
	minimizeButton = "no"
	icon = "favicon.ico"
/>
<style type="text/css">
	body {
		background-color : #C0C0C0;
		font-family : "굴림", "Arial";
		font-size : 9pt;
		margin : 5px;
	}
	p {
		margin : 2px, 2px, 1px, 2px;
		font-weight: bold;
	}
	form {
		margin : 0;
	}
	#inputText {
		width: 88%;
		height: 140px;
		font-size: 9pt;
		border: 1;
		border-style: solid;
		ime-mode:active; /* 한글을 기본으로 쓸 수 있도록 처리 */
	}
	#inputSubmit {
		height: 140px;
		font-size: 9pt;
		border: 1;
		border-style: solid;
	}
</style>
<script language="javascript">

//전역 변수 설정
	var fso
	fso = new ActiveXObject("Scripting.FileSystemObject");

	var logDir = 'logs'; //로그파일이 저장될 디렉토리
	var d, logFileName='wLogger-'; //저장 파일 명
	var nowDate, nowTime;
	// 로그 파일명 세팅 - 현재 날짜 이용. 형식: wLogger-YYYY-MM-DD.log
	d = new Date();

	//현재 날짜
	nowDate = leadingZeros(d.getFullYear(), 4) + '-';
	nowDate += leadingZeros(d.getMonth()+1, 2) + '-';
	nowDate += leadingZeros(d.getDate(), 2);

	//로그 파일 명
	logFileName += nowDate + '.log';


// 시간딜레이 - hta실행 시 스크립트 에러가 발생하는 현상을 해결하기 위한 방법
// 0.3 초간 딜레이를 둔 후 메인펑션을 시작한다.
function timeDelay(){
	setTimeout('windowOnLoad()', 300)
}

/********************************************
// 프로그램 실행 시 화면 셋팅
********************************************/
function windowOnLoad(){

	//초기 윈도우 창 셋팅
	var width = 500;
	//var height = 80; //초기 input text로 작업했을 때의 설정
	height = 200;

	var s = window.screen;
	var nowTime;

	self.resizeTo(width,height);
	self.moveTo(s.availWidth/2-width/2,s.availHeight/2-height/2);

	document.getElementById("newTask").focus();

	//로그파일이 저장될 디렉토리 및 파일이 있는지 확인하고 없으면 생성한다.
	if(!fso.FolderExists(logDir))	// 디렉토리 없다면
		fso.createFolder(logDir);
	addLogFile(logFileName, logDir);
	
	nowClock();

}

/********************************************
// 로그파일 생성
********************************************/
function addLogFile(file, dir){
	var logFileName = dir + '/' + file;
	if (!fso.FileExists(logFileName)) //파일이 존재하지 않는다면
		fso.CreateTextFile(logFileName);
}

/********************************************
// 로그를 기록한다.
********************************************/
function logContent(){
	var content = document.getElementById("newTask");
	var addContents;
	var ts;
	var ForReading = 1, ForWriting = 2, ForAppending = 8;
	var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
	var t = new Date();

	//현재 시간
	nowTime = leadingZeros(t.getHours(), 2) + ':';
	nowTime += leadingZeros(t.getMinutes(), 2) + ':';
	nowTime += leadingZeros(t.getSeconds(), 2);
	addContents = '[' + nowDate + ' ' + nowTime + '] \n' + content.value

	//파일을 열고 내용을 적는다.
	f = fso.GetFile(logDir + '/' + logFileName);
	ts = f.OpenAsTextStream(ForAppending, TristateUseDefault);
	ts.WriteLine(addContents);
	ts.close();

	//윈도우를 닫는다.
	closeWindow();
}

/********************************************
// 특정 숫자 앞에 0를 원하는 만큼 붙이기 위한 함수.
// input	: leadingZeros(숫자, 자리수)
// output	: 0003 (자릿수만큼 숫자 앞에 0를 붙인다)
********************************************/
function leadingZeros(n, digits) {
	var zero = '';
	n = n.toString();
	if (n.length < digits){
		for (i=0; i < digits-n.length; i++ ){
			zero += '0';
		}
	}
	return zero + n;
}

/********************************************
// esc키를 눌렀을 경우 윈도우를 종료한다.
/********************************************/
function exitWindow(){
	if (event.keyCode == 27)
		closeWindow();
}

/********************************************
// 프로그램 종료
/********************************************/
function closeWindow(){
	self.window.close();
}

/********************************************
// 현재 시간을 보여주기. 초단위로 보여준다
/********************************************/
function nowClock(){
	var time = new Date();
	nowTime = leadingZeros(time.getHours(), 2) + ':';
	nowTime += leadingZeros(time.getMinutes(), 2) + ':';
	nowTime += leadingZeros(time.getSeconds(), 2);
	document.getElementById("nowTime").innerHTML = nowTime;
	setTimeout("nowClock()",1000)
}

</script>
</head>
<body onLoad="timeDelay()">
<form name="frm" onSubmit="logContent(); return false;">
	<p>Current Time : <span id="nowTime">hh:mm:dd</span> </p>
	<textarea name="newTask" id="inputText" onKeyPress="exitWindow()"></textarea>
	<input type="submit" id="inputSubmit" value="Enter" />
</form>
</body>